esNodo(grafo, 1).
esNodo(grafo, 2).
esNodo(grafo, 3).
esNodo(grafo, 4).
esNodo(grafo, 5).

esEje(grafo, 1, 2).
esEje(grafo, 1, 3).
esEje(grafo, 1, 4).
esEje(grafo, 2, 1).
esEje(grafo, 2, 3).
esEje(grafo, 3, 1).
esEje(grafo, 3, 2).
esEje(grafo, 3, 5).
esEje(grafo, 4, 1).
esEje(grafo, 4, 5).
esEje(grafo, 5, 3).
esEje(grafo, 5, 4).

ejes(G, N1, N2) :- esEje(G, N1, N2).

%esCaminoSimple(+G,+D,+H,-L)
esCaminoSimple(G, D, D, []) :- esNodo(G, D).
esCaminoSimple(G, D, H, [D|[H|[]]]) :- D \= H, esNodo(G, D), esNodo(G, H), D \= H, esEje(G, D, H).
esCaminoSimple(G, D, H, [D|[Y|XS]]) :- D \= H, ejes(G, D, Y), esCaminoSimple(G, Y, H, [Y|XS]).